Design - Production Methodologies

Design Process

  • List of software development philosophies .

  • .

  • .

  • DesignProcess: Elon Musk's design process {1:22 -> 4:24} .

    1. "Make your requirements less dumb".

    2. "Delete the part or process".

      • "Possibly the most common error of a smart engineer is to optimize a thing that should not exist".

    3. "Simplify and optimize".

    4. "Accelerate".

      • "But don't go faster if you are digging your own grave".

    5. "Automate".

  • 3 ideas from the book 'Refactoring by Martin Fowler' .

    • The ideas:

      • Write code for humans to understand.

        • Make code that can be 'maintainable' and that can be changed in the future.

      • Only after 3 strikes do a refactor.

        • Do not refactor initially. Focus on the goal, leaving refactor for when the topic becomes a problem.

      • Make easy changes first, then make the complete changes.

        • This is because there is usually a lot of uncertainty, so wait to see which uncertainties will arise, without spending so much time on the first uncertainty you encounter.

    • The first two ideas are the most interesting:

  • "Fail fast"

    • Think, write notes, prototype. All of it quickly, to avoid spending time on something that would not survive in the future.

  • Game Development Caution - Fear of producing new things in a team .

    • Interesting.

Apps

Software Testing

Methodologies

DevOps

Implementation
  • DevOps:

    • DevOps == 'Development', 'Operations'.

    • A broad concept, something like a philosophy.

  • DevOps:

    • DevSecOps == 'Development', 'Security', 'Operations'.

    • It's DevOps but with emphasis on Security, in addition to the other concepts.

  • DevOps Engineer:

    • It's a role.

    • Use of CI/CD Pipeline.

  • SRE:

    • It's a role.

    • SRE == 'Site Reliability Engineering'

    • Part of DevOps. As the name says, but focused on 'reliability'.

Continuous Integration / Continuous Deployment (CI/CD Pipeline)
  • Steps:

    • Code repository:

      • Git.

    • Containers / Packaging.

    • Build tools / Package managers:

      • Maven.

      • Gradle.

      • Npm.

    • 'Push to artifact repository':

      • Nexus.

      • DockerHub.

  • Automation of all steps (Build automation):

    • GitLab.

    • GitHub Actions.

    • TeamCity.

    • Jenkins.

  • Cloud infrastructure as a service:

    • AWS (Amazon).

    • Google Cloud.

    • Microsoft Azure.

    • Alibaba Cloud.

    • IBM Cloud.

    • SalesForce.

    • Tencent Cloud.

    • Oracle Cloud.

Waterfall

Agile

  • .

Lean (for Software Development / Startup)